#if !defined(_I_NAME_RESOLUTOR_H)
#define _I_NAME_RESOLUTOR_H

#include "alias.h"

CREATE_ALIAS( INameResolutor )
CREATE_ALIAS( Plugin )

/**
 * Interface of a name resolutor.
 */
class DECLARATION_DLL INameResolutor
{

public:
		
	INameResolutor() {}

	/**
	 * Get the fully qualified name of a type.
	 */
	virtual string ResolveTypeName(string type) = 0;

	/**
	 * Get the fully qualified name of a command.
	 */
	virtual string ResolveCommandName(string command) = 0;

	/**
	 * Add a reference to a new plugin or select a plugin.
	 */
	virtual void AddOrSelectPlugin(PluginSp plugin) = 0;

};

#endif  // _I_NAME_RESOLUTOR_H
